Method And Apparatus For Annotating A Graphical Output

ABSTRACT

Various methods are provided for generating and annotating a graph. One example method may include determining one or more key patterns in a primary data channel, wherein the primary data channel is derived from raw input data in response to a constraint being satisfied. A method may further include determining one or more significant patterns in one or more related data channels. A method may further include generating a natural language annotation for at least one of the one or more key patterns or the one or more significant patterns. A method may further include generating a graph that is configured to be displayed in a user interface, the graph having at least a portion of the one or more key patterns, the one or more significant patterns and the natural language annotation.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.15/188,423, titled “METHOD AND APPARATUS FOR ANNOTATING A GRAPHICALOUTPUT,” filed Jun. 21, 2016, which is a continuation of U.S.application Ser. No. 14/634,035, titled “METHOD AND APPARATUS FORANNOTATING A GRAPHICAL OUTPUT,” filed Feb. 27, 2015, now U.S. Pat. No.9,405,448 which is a continuation of International Application No.PCT/US2012/053128, filed Aug. 30, 2012, the contents of which are herebyincorporated herein by reference in their entirety.

TECHNOLOGICAL FIELD

Embodiments of the present invention relate generally to naturallanguage generation technologies and, more particularly, relate to amethod, apparatus, and computer program product for textually annotatinga graphical output.

BACKGROUND

In some examples, a natural language generation (NLG) system isconfigured to transform raw input data that is expressed in anon-linguistic format into a format that can be expressedlinguistically, such as through the use of natural language. Forexample, raw input data may take the form of a value of a stock marketindex over time and, as such, the raw input data may include data thatis suggestive of a time, a duration, a value and/or the like. Therefore,an NLG system may be configured to input the raw input data and outputtext that linguistically describes the value of the stock market index.For example, “securities markets rose steadily through most of themorning, before sliding downhill late in the day.”

Data that is input into a NLG system may be provided in, for example, arecurrent formal structure. The recurrent formal structure may comprisea plurality of individual fields and defined relationships between theplurality of individual fields. For example, the input data may becontained in a spreadsheet or database, presented in a tabulated logmessage or other defined structure, encoded in a ‘knowledgerepresentation’ such as the resource description framework (RDF) triplesthat make up the Semantic Web and/or the like. In some examples, thedata may include numerical content, symbolic content or the like.Symbolic content may include, but is not limited to, alphanumeric andother non-numeric character sequences in any character encoding, used torepresent arbitrary elements of information. In some examples, theoutput of the NLG system is text in a natural language (e.g. English,Japanese or Swahili), but may also be in the form of synthesized speech.

BRIEF SUMMARY

Methods, apparatuses, and computer program products are described hereinthat are configured to generate a graph that is configured to displayone or more key patterns that are detected in a data channel. In someexample embodiments, the graph may also include one or more significantpatterns in one or more related channels and/or events. In furtherexamples, a time period or duration of the data shown in the graph maybe selected such that the displayed graph illustrates the portion of thedata channel that contains the one or more key patterns. The outputgraph is further configured to include textual annotations that providea textual comment, phrase or otherwise is configured to explain, usingtext, the one or more key patterns, the one or more significant patternsand/or the events in a contextual channel in natural language. Infurther examples, the textual annotations are generated from the rawinput data and further are designed, in some examples, to textuallydescribe identified patterns, anomalies and/or the context of the graph.In some examples, a narrative may be included with the graph thatprovides situational awareness or an overview of the data/patternsdisplayed on and/or off of the graph. Advantageously, for example, thegraph is configured to visually provide situational awareness to aviewer.

BRIEF DESCRIPTION OF THE DRAWINGS

Having thus described embodiments of the invention in general terms,reference will now be made to the accompanying drawings, which are notnecessarily drawn to scale, and wherein:

FIG. 1 is a schematic representation of a graphical annotation systemthat may benefit from some example embodiments of the present invention;

FIG. 2 illustrates an example graphical output in accordance with someexample embodiments of the present invention;

FIG. 3 illustrates a block diagram of an apparatus that embodies agraphical annotation system in accordance with some example embodimentsof the present invention; and

FIGS. 4-6 illustrate flowcharts that may be performed by a graphicalannotation system in accordance with some example embodiments of thepresent invention.

DETAILED DESCRIPTION

Example embodiments will now be described more fully hereinafter withreference to the accompanying drawings, in which some, but not allembodiments are shown. Indeed, the embodiments may take many differentforms and should not be construed as limited to the embodiments setforth herein; rather, these embodiments are provided so that thisdisclosure will satisfy applicable legal requirements. Like referencenumerals refer to like elements throughout. The terms “data,” “content,”“information,” and similar terms may be used interchangeably, accordingto some example embodiments, to refer to data capable of beingtransmitted, received, operated on, and/or stored. Moreover, the term“exemplary”, as may be used herein, is not provided to convey anyqualitative assessment, but instead merely to convey an illustration ofan example. Thus, use of any such terms should not be taken to limit thespirit and scope of embodiments of the present invention. The termsgraph or graphical output may be construed to comprise a graph that isconfigured to be displayable in a user interface, but may also describean input into a graphing system such that a graph may be created fordisplay in the user interface. As such, the terms graph or graphicaloutput may be used interchangeably herein.

In some example embodiments described herein, the apparatus, method andcomputer program product is configured to generate a graph having ascale (e.g. amplitude (y-axis) and/or time scale (x-axis)) thatadvantageously displays one or more data channels (e.g. a first orprimary data channel, a secondary or related data channel and/or thelike) that are derived from raw input data, one or more natural languagetext annotations and/or a narrative describing raw input data. As such,advantageously, a user viewing the graph, in a user interface or usingother viewing means, may be provided with situational awareness withregard to the patterns shown on the graph as well as the events and orpatterns that may have influenced the patterns shown on the graph.

Situational awareness may be defined as the perception of environmentalelements with respect to time and/or space, the comprehension of theirmeaning, and the projection of their status after some variable haschanged, such as time, or based on the happening of an event such as analarm or alert. In other words, situational awareness is a stateachieved when information that is qualitatively and quantitativelydetermined as suitable for particular purpose is made available to auser by engaging them in an appropriate information exchange pattern ormental model. Situational awareness involves being aware of what ishappening in the vicinity of a person or event to understand howinformation, events, and/or one's own actions may impact goals andobjectives, both immediately and in the near future. Situationalawareness may also be related to the perception of the environmentcritical to decision-makers in complex, dynamic areas from aviation, airtraffic control, power plant operations, military command and control,engineering, machine monitoring, oil and gas, power plant monitoring,nuclear energy and emergency services such as firefighting and policing.Lacking or inadequate situational awareness has been identified as oneof the primary factors in accidents attributed to human error. Accuratemental models are one of the prerequisites for achieving situationalawareness. A mental model can be described as a set of well-defined,highly-organized yet dynamic knowledge structures developed over timefrom experience.

In some examples, a first or primary data channel may be selected forinclusion in a graph based on a selection by a user, via a userinterface, may be selected based on the happening of a condition suchas, but not limited to, an alert, an alarm, an anomaly, a violation of aconstraint, a warning, a predetermined condition and/or the like.Alternatively or additionally the selection of the primary data channelmay be determined based on the occurrence and/or detection of a patternin the primary data channel.

In some example embodiments, a secondary or related data channel mayalso be selected. In some cases, there may be a plurality of secondaryor related data channels. The secondary or related data channel may beselected for inclusion in a graph based on the detection of anomalous,unexpected or otherwise flagged behavior in the second or relatedchannel. In some examples, the second or related channel is compared toone or more patterns in the primary data channel over a similar timeperiod. For example, a first data channel may indicate a rise in heartrate, whereas a second data channel may indicate a stable or even adecline in respiration rate. Generally respiration rate rises with heartrate, and, as such, a stable respiration rate is generally unexpected.In some examples, unexpected behavior may lead to a life threateningcondition, be indicative of a dangerous condition or the like.

Relationships between data channels may be defined as anomalous behaviorby a qualitative model such as a domain model. A domain model is arepresentation of information about the domain. For example a domainmodel may contain an ontology that specifies the kinds of objects andconcepts and the like that may exist in the domain in concrete orabstract form, properties that may be predicated of the objects andconcepts and the like, relationships that may hold between the objectsconcepts and the like, and representations of any specific knowledgethat is required to function in the domain. In some example multipledomain models may be provided for a single domain. Example domains mayinclude, but are not limited to, medical, oil and gas, industrial,weather, legal, financial and/or the like. Alternatively oradditionally, a plurality of related channels may be included, forexample pulse rate, oxygen levels, blood pressure and/or the like.

In some examples, patterns (e.g. a trend, spike, step or the like) maybe detected or otherwise identified in the primary data channel and/orin the one or more secondary data channels. Once a pattern is detectedin the primary data channel and/or the one or more secondary datachannels, an importance level or importance is assigned to each of thepatterns. In the primary data channel an importance level may be definedbased on thresholds, constraints, predefined conditions or the like. Inthe secondary data channels an importance level may also be assignedbased on thresholds, constraints, predefined conditions or the like,however an importance level may also be assigned based on therelationship between the secondary data channels and the primary datachannels and/or the relationships between the patterns detected in theprimary data channels and the patterns detected in the secondary datachannels. A pattern in the primary channel may be defined as a keypattern in an instance in which the importance level of the patternexceeds or otherwise satisfies a predefined importance level. Likewise,a significant pattern is a pattern in a secondary data channel thatexceeds or otherwise satisfies a predefined importance level. In someexamples, a pattern in the one or more secondary channels may also beclassified as a significant pattern if it represents an anomaly orotherwise unexpected behavior when compared with the primary datachannel.

In some example embodiments, a contextual channel may also be selected.A contextual channel is a data channel that provides a background orcircumstance information that may have caused or otherwise influencedthe one or more key patterns and/or the one or more significant patterns(e.g. proximate cause). For example, a contextual channel may indicatean event, such as a medical treatment that was applied at the time of orjust prior to the rise of the heartbeat and/or the fall or steady stateof the respiration rate. Alternatively or additionally, a plurality ofdata channels may also be selected for inclusion in a graph based on ananomaly or unexpected behavior.

Alternatively or additionally, one or more data channels may be selectedfor inclusion in a graph even though the one or more data channels arerepresentative of expected behavior. For example, in the medical domain,a medical professional may expect to see both heart rate and respirationrate on a graph even if both are behaving in expected ways, sinceexpected behavior may be indicative of an important result, namely aclean bill of health.

In yet further example embodiments, events may also be generated fordisplay in the graph. An event may be described in a contextual channel,may be entered into an event log that is input with the raw input dataor may be inferred. For example, caffeine administration may be enteredas an explicit event in a patient record (e.g. in an event log), thecaffeine could be detected by a change in one or data channels whichrecord what medication is being administered through an IV line and/orthe caffeine administration may be inferred based on a spike in heartrate. In instances in which an event is identified that satisfies animportance threshold, the event may be displayed as a visual annotation.In an example in which a graph is displayed, events may be displayed asa vertical line (see e.g., FIG. 2). Alternatively or additionally eventsmay be generated as a horizontal line with indicators showing themultiple occurrences of an event and/or the like. In othervisualizations, events may be displayed via text, indicator or othervisual outputs.

In some example embodiments, a scale may be selected for the graph basedon the primary data channel, the secondary data channel or the like. Thescale may be determined based on a time period or duration in which apattern that satisfies an importance threshold is identified, anomalousbehavior occurs in a related data channel and/or the like. Alternativelyor additionally the time period may be set by a user, may be a timeperiod that is significant or specifically identified on the basis ofproperties of the domain, or the like.

In further example embodiments, textual annotations and/or a narrativemay be included with the graph. The textual annotations and/or thenarrative may be provided by a natural language generation system thatis configured to generate one or more textual annotations in the form ofsentences or phrases that describe the patterns in the data channels,expected or unexpected behavior, an event, a contextual channel and/orthe like. Additionally, in some examples, the sentences or phrases maytake the form of stand-alone text that provides situational awarenessand/or situational analysis of the graph. In some examples, situationanalysis text may be configured to include pattern descriptions thatcontribute to narrative coherence, background information or the like.The textual annotations may be located on the graph, such as at thelocation where the anomalies and/or the patterns are represented in thegraph. Alternatively or additionally, the narrative or situationalawareness text may be displayed on or near the graph in some examples.Whereas, in other examples, the narrative or situational text may becontained in a separate file or may be generated before/after orotherwise separately from the generation of the graph. Alternatively oradditionally, the textual annotations and/or narrative may be providedvia speech or other available modalities.

Based on the one or more channels derived from the raw input data, thecontextual channel and/or the annotations, the systems and methodsdescribed herein are configured to generate a graph for display. Thegraph is configured to display a time scale that contains thoseidentified sections (e.g. key patterns and/or significant patterns) inthe one or more data channels, the textual annotations, additionalavailable visual annotations and/or the like. In some exampleembodiments, user interaction with the narrative text may result in anannotation on the graphical output to be highlighted. Similarlyselection of an annotation may highlight narrative text related to theannotation. Alternatively or additionally, the annotations may include asymbol or other reference numeral that is indicative of or otherwiserelated to the narrative. For example, the narrative may indicate that afirst key pattern is indicated by an arrow, a circle, a box, a referencenumber or the like in the graph.

FIG. 1 is an example block diagram of example components of an examplegraphical annotation environment 100. In some example embodiments, thegraphical annotation environment 100 comprises a data analyzer 102, adata interpreter 104, a graphical annotation engine 106, a naturallanguage generation system 108 and one or more data sources, such as butnot limited to, raw input data 110, an event log 112 and a domain model114. In some example embodiments, historical data may also be accessedand/or otherwise analyzed. The data analyzer 102, a data interpreter104, graphical annotation engine 106, a natural language generationsystem 108 make take the form of, for example, a code module, acomponent, circuitry or the like. The components of the graphicalannotation environment 100 are configured to provide various logic (e.g.code, instructions, functions, routines and/or the like) and/or servicesrelated to the generation and/or annotation of a graphical output.

In some example embodiments, the data analyzer 102 is configured toinput raw data, such as the raw data contained in the raw input data110. The receipt or input of the raw input data may occur in response toan alarm condition (e.g. an alarm received from a source such as, butnot limited to, another system, another monitoring system or the like),a violation of a constraint (e.g. a data value over a threshold, withina threshold for a period of time and/or the like), a user input or thelike. Alternatively or additionally the data analyzer 102 may beconfigured to receive or input raw input data continuously orsemi-continuously, such as via a data stream, and determine animportance of the raw input data (e.g., whether the data violates aconstraint, satisfies a threshold and/or the like).

Raw input data may include data such as, but not limited to, time seriesdata that captures variations across time (e.g. profits, rainfallamounts, temperature or the like), spatial data that indicates variationacross location (e.g. rainfall in different regions), orspatial-temporal data that combines both time series data and spatialdata (e.g. rainfall across time in different geographical output areas).The raw input data contained or otherwise made accessible by the rawinput data 110 may be provided in the form of numeric values forspecific parameters across time and space, but the raw input data mayalso contain alphanumeric symbols, such as the RDF notation used in thesemantic web, or as the content of database fields. The raw input data110 may be received from a plurality of sources and, as such, datareceived from each source, sub source or data that is otherwise relatedmay be grouped into or otherwise to referred to as a data channel.

The data analyzer 102 is configured to detect patterns and trends in theone or more data channels that are derived from the raw input data toprovide a set of abstractions from the raw input data in the datachannels. For example, a time-series dataset may contain tens ofthousands of individual records describing the temperature at variouspoints on a component piece of machinery over the course of a day with asample once every two or three seconds. Trend analysis may then be usedto identify that the temperature changes in a characteristic waythroughout certain parts of the day. As such, trend analysis isconfigured to abstract those changes into an abstraction that isrepresentative of the change over time. In some example embodiments, thedata analyzer 102 may be configured to fit a piecewise linear model tothe data received in the primary data channel, related data channel orthe like.

In some example embodiments, the data analyzer 102 is further configuredto determine a first or primary data channel. The primary data channelis generally related, for example, to the raw input data and/or the datachannel having data values that caused or otherwise related to the alarmcondition, a data channel identified by a user action or a data channelthat has otherwise been provided to the data analyzer 102. In someexample embodiments, the data analyzer 102 may also be configured toidentify data channels that are related to the primary data channel.Alternatively or additionally, relations between data channels may bedefined by the domain model 114 and input into the data analyzer 102.

The data analyzer 102 may then identify trends, spikes, steps or otherpatterns in the data channels to generate abstractions that summarizethe patterns determined in the primary data channel and/or the otherrelated data channels. Alternatively or additionally, the data analyzer102 may also be configured to perform pattern detection on the raw inputdata irrespective of data channels or the receipt of an alarm condition.

A data interpreter, such as data interpreter 104, may then be configuredto input the abstractions and determine an importance level and/orrelationships between the abstractions identified in the one or moredata channels. In order to determine the importance level andrelationships, the data interpreter 104 may access the domain model 114directly or indirectly via the data analyzer 102 or the like. The domainmodel 114 may contain information related to a particular domain orindustry. In some examples, the domain model 114 may provide single datachannel limits related to normal behaviors in a domain (e.g. normalranges), information related to anomalous behaviors and/or the like. Inother examples the domain model 114 may describe relationships betweenvarious events and/or phenomena in multiple data channels. For examplein a weather domain, a domain model may include wind speeds that arerelated to hurricane type events or temperatures that may cause harm tohumans or other animals or may cause damage or interference to shipping.Extreme weather events may be labeled as important, whereas typicaltemperatures may not be marked as important.

In some example embodiments, the data interpreter 104 may be configuredto determine the importance of the one or more detected patterns in theprimary data channel, such as by using the domain model 114. The datainterpreter 104 may assign an importance level based on the patternitself (e.g. magnitude, duration, rate of change or the like), definedconstraints (e.g. defined thresholds or tolerances), temporalrelationships between the pattern in the primary data channel andpatterns in other related data channels and/or the like. For example, aheart rate over 170 beats per minute, or 100 mile per hour winds, may beassigned a high level of importance. In some examples, the patternsand/or the constraints may be defined by the domain model 114.

Using the importance level, the data interpreter 104 may assign certainones of the patterns as key patterns. A key pattern may be selectedbased on a pre-determined importance level, such as a threshold definedby a user or a constraint defined by the domain model 114. Alternativelyor additionally, key patterns may be selected based on those patterns inthe primary data channel with the highest level of importance, based onthe alarm condition and/or the like. For example any wind readings over50 miles per hour may be designated as key patterns, whereas in otherexamples only the highest wind reading over a time period may be adetermined to be a key pattern. In other examples, the importance leveldetermination may be performed over a plurality of time scales that maybe user defined (e.g., one hour, one day, one week, one month and/or thelike).

In some example embodiments, the data interpreter 104 may also beconfigured to determine the importance of patterns detected in one ormore secondary or related data channels. In some examples, the datainterpreter 104 may determine one or more patterns in the related datachannels that overlap time-wise or occur within the same time period asthe patterns in the primary data channel. The data interpreter 104 maythen mark the one or more patterns in the related channels as expected,unexpected or as having or not having some other property using thedomain model 114. For example, the domain model may suggest that the oneor more patterns in the related data channel were expected to rise asthey did in the primary channel. By way of example, as winds are rising,a wave height may then be expected to rise. In other cases the behaviorof the one or more related channels may be unexpected or may beanomalous when compared to the behavior of the primary data channel.

The data interpreter 104 may is configured to instantiate a plurality ofmessages based on the raw input data derived from the key events, thesignificant events, the primary data channel, the one or more relateddata channels, the historical data, the events (e.g. in the event log112), the contextual channel and/or the like. In order to determine theone or more messages, the importance level of each of the messages andrelationships between the messages, the data interpreter 104 may beconfigured to access the domain model 104 directly or indirectly via thedata analyzer 102 or the like.

In some examples, messages are language independent data structures thatcorrespond to informational elements in a text and/or collect togetherunderling data in such a way that the underlying data can belinguistically expressed. In some examples, messages are created basedon a requirements analysis as to what is to be communicated for aparticular scenario (e.g. for a particular domain). A message typicallycorresponds to a fact about the underlying data (for example, theexistence of some observed event) that could be expressed via a simplesentence (although it may ultimately be realized by some otherlinguistic means). For example, to linguistically describe wind, a usermay want to know a speed, a direction, a time period or the like, butalso the user wants to know changes in speed over time, warm or coldfronts, geographic areas and or the like. In some cases, users do noteven want to know wind speed, they simply want an indication of adangerous wind condition. Thus, a message related to wind speed mayinclude fields to be populated by data related to the speed, direction,time period or the like, and may have other fields related to differenttime points, front information or the like. The mere fact that windexists may be found in the data, but to linguistically describe “lightwind” or “gusts” different data interpretation must be undertaken as isdescribed herein.

The one or more patterns may be marked as significant patterns based onthe domain model 114. For example, patterns in the related data channelthat have an importance level above a predetermined threshold defined bythe domain model 114 may be marked as significant patterns. In someexample embodiments, unexpected patterns are also categorized assignificant patterns as they are suggestive of a particular condition orfault. Other patterns may be determined to be significant patterns basedon one or more constraints on channel value (e.g. expected range ofvalues or the like), data anomalies, patterns marked as neither expectedor unexpected that satisfy an importance level, and/or the like.

In further example embodiments, the data interpreter 104 may beconfigured to determine and/or infer one or more events from the one ormore data channels. Events may include specific activities that mayinfluence the one or more key patterns and/or may have caused the one ormore significant patterns. In some examples, the one or more events maybe inferred based in context with the one or more patterns in theprimary data channel. Alternatively or additionally events may beprovided as a separate channel, such as a contextual channel, in the rawinput data 110 or may be provided directly, such as in an event log 112,to the data interpreter 104.

The one or more key patterns and the one or more significant patternsmay be input into the graphical annotation engine 106 and the naturallanguage generation system 108 to enable the generation of a graphicaloutput and/or natural language annotations. In some example embodiments,the graphical annotation engine 106 is configured to generate agraphical output having one or more textual annotations, such as thegraphical output displayed with reference to FIG. 2. The graphicaloutput and the one or more textual annotations are configured to begenerated by one or more of a scale determination engine 120, anannotation location determiner 122 and a graphical output generator 124.

In some example embodiments the scale determination engine 120 isconfigured to determine a time scale (e.g. x-axis) to be used in thegraphical output. The scale determination engine 120 may determine atime period that captures or otherwise includes one or more of the keypatterns. In some example embodiments, the time period may be chosenbased on the highest number of key patterns, whereas in otherembodiments the time scale chosen may include each of the one or morekey patterns and/or each of the one or more significant patterns.Alternatively or additionally, the scale determination engine 120 mayalso determine a scale for the amplitude or y-axis of the graph.

An annotation location determiner 122 is configured to place one or moreannotations, such as textual or visual annotations, on a graphicaloutput produced by the graphical output generator 124. As is describedherein, natural language annotations may be generated, such as by thenatural language generation system 108, to explain or otherwise describethe one or more key patterns in the primary data channel. In an instancein which the data interpreter 104 determines one or more significantpatterns, natural language annotations may also be generated to explainthe one or more significant patterns in the related data channels.

The annotation location determiner 122 is further configured to place anannotation on the graphical output in the proximity of the key patternor the significant pattern. In other example embodiments, theannotations may otherwise be linked to the graphical output by usingreference lines, highlights or other visual indications on or around thegraphical output.

In some example embodiments a natural language generation system, suchas natural language generation system 108, is configured to generatephrases, sentences, text or the like which may take the form of naturallanguage annotations. Other linguistic constructs may be generated insome example embodiments. The natural language generation system 108comprises a document planner 130, a microplanner 132 and/or a realizer134. Other natural language generation systems may be used in someexample embodiments, such as a natural language generation system asdescribed in Building Natural Language Generation Systems by Ehud Reiterand Robert Dale, Cambridge University Press (2000), which isincorporated by reference in its entirety herein.

The document planner 130 is configured to input the one or more patternsfrom the data interpreter in the form of messages and determine how touse those messages to describe the patterns in the one or more datachannels derived from the raw input data. The document planner 130 maycomprise a content determination process that is configured to selectthe messages, such as the messages that describe the key patterns and/orthe significant patterns, that are be displayed in the graphical outputby the graphical annotation engine 106. In some examples the contentdetermination process may be related to or otherwise limited by thescale determined by the scale determination engine 120. The documentplanner 130 may also comprise a structuring process that determines theorder of messages referring to the key patterns and/or significantpatterns to be included in a narrative and/or the natural languageannotations.

In some example embodiments, the document planner 130 may access one ormore text schemas for the purposes of content determination and documentstructuring. A text schema is a rule set that defines the order in whicha number of messages are to be presented in a document. For example, anevent (e.g. medication injection) may be described prior to a keypattern (e.g. rise in heart rate). In other examples, a significantpattern (e.g. falling or steady respiratory rate) may be describedafter, but in relation to, a description of the key pattern (e.g. risein heart rate). The output of the document planner 130 may be atree-structured object or other data structure that is referred to as adocument plan. In an instance in which a tree-structured object ischosen for the document plan, the leaf nodes of the tree may contain themessages, and the intermediate nodes of the tree structure object may beconfigured to indicate how the subordinate nodes are related to eachother.

The microplanner 132 is configured to modify the document plan from thedocument planner 130, such that the document plan may be expressed innatural language. In some example embodiments, the microplanner 132 mayperform aggregation, lexicalization and referring expression generation.In some examples, aggregation includes, but is not limited to,determining whether two or more messages can be combined togetherlinguistically to produce a more complex sentence. For example, one ormore key patterns may be aggregated so that both of the key patterns canbe described by a single sentence. Alternatively or additionally,aggregation may not be performed in some instances so as to enablestand-alone interpretation if a portion of the natural language text isshown as an annotation independently on a graphical output.

In some examples, lexicalization includes, but is not limited to,choosing particular words for the expression of concepts and relations.In some examples, referring expression generation includes, but is notlimited to, choosing how to refer to an entity so that it can beunambiguously identified by the reader. The output of the microplanner132, in some example embodiments, is a tree-structured realizationspecification whose leaf-nodes are sentence plans, and whose internalnodes express rhetorical relations between the leaf nodes.

The realizer 134 is configured to traverse the tree-structuredrealization specification to express the tree-structured realizationspecification in natural language. The realization process that isapplied to each sentence plan makes use of a grammar which specifies thevalid syntactic structures in the language and further provides a way ofmapping from sentence plans into the corresponding natural languagesentences. The output of the process is, in some example embodiments, awell-formed natural language text. In some examples, the naturallanguage text may include embedded mark-up. The output of the realizer134, in some example embodiments, is the natural language annotationsthat are configured to be on or in proximity to a graphical output. Therealizer may also output situational analysis text or a narrative thatis configured to describe or otherwise summarize the one or more keypatterns, the one or more significant patterns, the one or morecontextual channels, and/or the one or more events to be displayed inthe graphical output. Alternatively or additionally, the naturallanguage annotations and/or the narrative may describe data that is notincluded on the graph to provide additional situational awareness.

The graphical output generator 124 is configured to generate a graphicaloutput within the determined scale. Thus, the graphical output includesthe raw input data for the primary data channel and/or any related datachannels within the determined scale. The graphical output generator 124is further configured to display the natural language annotations on thegraphical output as well as a narrative that describes the data channelsdisplayed in the graphical output. In some example embodiments, thenatural language annotations may be interactively linked to thegraphical output. For example, phrases within the narrative may beunderlined or otherwise highlighted such that in an instance in whichthe underlined or otherwise highlighted phrases are selected, a naturallanguage annotation may be shown or otherwise emphasized on thegraphical output. Alternatively or additionally, by selecting a naturallanguage annotation on the graphical output, the graphical outputgenerator in conjunction with a user interface may underline orotherwise highlight a corresponding phrase in the narrative.Alternatively or additionally, other visualizations may be provided bythe graphical output generator 124 in conjunction with or in replacementof the graph or graphical output, such as, but not limited to, a visualimage, a video, a chart and/or the like.

FIG. 2 illustrates an example graphical output having multiple datachannels in accordance with some example embodiments of the presentinvention. FIG. 2 provides a graphical output that visually representsthe behavior of heart rate and respiration rate in response to anapplication of caffeine over a period of time. The following exampletable (e.g. raw input data) illustrates a primary data channel (e.g.heart rate) and a related data channel (e.g. respiration rate):

Time Heart Rate Respiration Rate 1 68 14 2 72 15 3 70 14 4 70 14 5 69 166 72 15 7 73 16 8 68 13 9 70 14 10 71 15 11 90 14 12 110 14 13 118 14 14116 15 15 105 15 16 92 14 17 86 13 18 80 14 19 75 14 20 72 15 21 70 1422 71 13 23 69 13 24 71 14

As is illustrated in the table above, there is a rapid change of heartrate between time point 10 and time point 11 indicating a change incondition. As such, a data analyzer 102, a data interpreter 104 and/orthe like may receive an indication of an alarm condition, may determinethat such a spike is representative of an alarm condition, may receivean indication by the user or the like. In response, the data analyzer102, the data interpreter 104 or the like may cause the heart rate datachannel to be selected as the primary data channel. In otherembodiments, a user, domain knowledge or the like may indicate that theheart rate channel is selected to be the primary data channel.

In an instance in which a primary data channel is identified, in thiscase heart rate, the data analyzer 102, a data interpreter 104 and/orthe like may determine whether one or more key patterns are present inthe primary data channel 212. In this example, a key pattern may be therapid change of heart rate between time point 10 and time point 11, butit may also include the rise and fall (e.g. spike) of the heart ratebetween time points 10 and 19, with the high point being at time point13. In some examples, there may be multiple key patterns in the primarydata channel.

The data interpreter 104 may then determine whether there is a secondaryor related data channel that contains a significant pattern, such assecondary channel 216 (e.g. respiration rate), that has a significantpattern (e.g. no change when a change is generally expected) in acorresponding time period. As described herein, the corresponding timeperiod may be the same time period or may be a later time period whencompared to the time period of the key patterns. Further, thecorresponding time period may, in some examples, be defined by a domainmodel, such as domain model 114.

The data analyzer 102, a data interpreter 104 and/or the like may accessdata related to the respiration rate of the patient during the same orsimilar time period. Upon reviewing the corresponding data, the dataanalyzer 102, the data interpreter 104 and/or the like may determinethat the secondary channel 216 was relatively flat and, based on thedomain model, such a behavior was unexpected. As described herein,unexpected behavior in a related data channel is a significant pattern.Thus, FIG. 2 provides a key pattern, namely the heart rate changebetween time periods 10 and 19 and a significant pattern represented bythe relatively steady respiration rate over the same time period. FIG. 2further comprises an event 220 that was derived from a contextualchannel, an event log or the like. The event 220 corresponds to theapplication of caffeine in this example.

The natural language generation system 108 may input the primary datachannel, the secondary data channel, the contextual channel, events,and/or the like. As such, the natural language generation system 108 maybe configured to generate a narrative, such as narrative 224, and one ormore textual annotations, such as textual annotations 214, 218 and 222.In some examples, the textual annotations are configured to describe theone or more key patterns, the one or more significant patterns, the oneor more events, the contextual channel or the like.

The graphical annotation engine 106 may input the key pattern and thesignificant pattern and may determine a time scale for the graph, suchas by the scale determination engine 120. In FIG. 2, the scale chosen isconfigured to highlight the key pattern, the significant pattern and thecaffeine event. Based on the scale, the primary and secondary datachannels are represented graphically by the graphical output generator124. The annotation location determiner 122 may locate the key pattern,significant pattern and/or event on the graph and then may assign alocation of a textual annotation in a nearby area, such as is shown inFIG. 2. One or more text annotations, such as textual annotations 214,218 and 222 may then be added to the graph in conjunction with anarrative 224.

FIG. 3 is an example block diagram of an example computing device forpracticing embodiments of an example graphical annotation environment.In particular, FIG. 3 shows a computing system 300 that may be utilizedto implement a graphical annotation environment 100 having a dataanalyzer 102, a data interpreter 104, a graphical annotation engine 106,a natural language generation system 108 and/or a user interface 310.One or more general purpose or special purpose computing systems/devicesmay be used to implement the data analyzer 102, the data interpreter104, the graphical annotation engine 106, the natural languagegeneration system 108 and/or the user interface 310. In addition, thecomputing system 300 may comprise one or more distinct computingsystems/devices and may span distributed locations. For example, in someembodiments, the natural language generation system 108 may beaccessible remotely via the network 350. In other example embodiments,one or more of the data analyzer 102, the data interpreter 104, thegraphical annotation engine 106, the natural language generation system108 and/or the user interface 310 may be configured to operate remotely.In some example embodiments, a pre-processing module or other modulethat requires heavy computational load may be configured to perform thatcomputational load and thus may be on a remote device or server. Forexample, the data analyzer 102 and/or the data interpreter 104 may beaccessed remotely. Furthermore, each block shown may represent one ormore such blocks as appropriate to a specific example embodiment. Insome cases one or more of the blocks may be combined with other blocks.Also, the data analyzer 102, the data interpreter 104, the graphicalannotation engine 106, the natural language generation system 108 and/orthe user interface 310 may be implemented in software, hardware,firmware, or in some combination to achieve the capabilities describedherein.

In the example embodiment shown, computing system 300 comprises acomputer memory (“memory”) 301, a display 302, one or more processors303, input/output devices 304 (e.g., keyboard, mouse, CRT or LCDdisplay, touch screen, gesture sensing device and/or the like), othercomputer-readable media 305, and communications interface 306. Theprocessor 303 may, for example, be embodied as various means includingone or more microprocessors with accompanying digital signalprocessor(s), one or more processor(s) without an accompanying digitalsignal processor, one or more coprocessors, one or more multi-coreprocessors, one or more controllers, processing circuitry, one or morecomputers, various other processing elements including integratedcircuits such as, for example, an application-specific integratedcircuit (ASIC) or field-programmable gate array (FPGA), or somecombination thereof. Accordingly, although illustrated in FIG. 3 as asingle processor, in some embodiments the processor 303 comprises aplurality of processors. The plurality of processors may be in operativecommunication with each other and may be collectively configured toperform one or more functionalities of the graphical annotationenvironment as described herein.

The data analyzer 102, the data interpreter 104, the graphicalannotation engine 106, the natural language generation system 108 and/orthe user interface 310 are shown residing in memory 301. The memory 301may comprise, for example, transitory and/or non-transitory memory, suchas volatile memory, non-volatile memory, or some combination thereof.Although illustrated in FIG. 3 as a single memory, the memory 301 maycomprise a plurality of memories. The plurality of memories may beembodied on a single computing device or may be distributed across aplurality of computing devices collectively configured to function asthe graphical annotation environment. In various example embodiments,the memory 301 may comprise, for example, a hard disk, random accessmemory, cache memory, flash memory, a compact disc read only memory(CD-ROM), digital versatile disc read only memory (DVD-ROM), an opticaldisc, circuitry configured to store information, or some combinationthereof.

In other embodiments, some portion of the contents, some or all of thecomponents of the data analyzer 102, the data interpreter 104, thegraphical annotation engine 106, the natural language generation system108 and/or the user interface 310 may be stored on and/or transmittedover the other computer-readable media 305. The components of the dataanalyzer 102, the data interpreter 104, the graphical annotation engine106, the natural language generation system 108 and/or the userinterface 310 preferably execute on one or more processors 303 and areconfigured to generate graphical annotations, as described herein.

Alternatively or additionally, other code or programs 330 (e.g., anadministrative interface, a Web server, and the like) and potentiallyother data repositories, such as data repository 340, also reside in thememory 301, and preferably execute on one or more processors 303. Ofnote, one or more of the components in FIG. 3 may not be present in anyspecific implementation. For example, some embodiments may not provideother computer readable media 305 or a display 302.

In some example embodiments, as described above, the graphicalannotation engine 106 may comprise a scale determination engine 120, anannotation location determiner 122, a graphical output generator 124 orthe like. The natural language generation system 108 may comprise adocument planner 130, a microplanner 132, a realizer 134 and/or thelike. In some example embodiments, the data analyzer 102, the datainterpreter 104, the graphical annotation engine 106, the naturallanguage generation system 108 and/or the user interface 310 may alsoinclude or otherwise be in data communication with raw input data 110,event log 112 and/or the domain model 114. The data analyzer 102, thedata interpreter 104, the graphical annotation engine 106, the naturallanguage generation system 108 and/or the user interface 310 are furtherconfigured to provide functions such as those described with referenceto FIG. 1.

The data analyzer 102, the data interpreter 104, the graphicalannotation engine 106, the natural language generation system 108 and/orthe user interface 310 may interact with the network 350, via thecommunications interface 306, with remote data sources 356 (e.g. remotereference data, remote performance data, remote aggregation data and/orthe like), third-party content providers 354 and/or client devices 358.The network 350 may be any combination of media (e.g., twisted pair,coaxial, fiber optic, radio frequency), hardware (e.g., routers,switches, repeaters, transceivers), and protocols (e.g., TCP/IP, UDP,Ethernet, Wi-Fi, WiMAX, Bluetooth) that facilitate communication betweenremotely situated humans and/or devices. In some instance the network350 may take the form of the internet or may be embodied by a cellularnetwork such as an LTE based network. In this regard, the communicationsinterface 306 may be capable of operating with one or more air interfacestandards, communication protocols, modulation types, access types,and/or the like. The client devices 358 include desktop computingsystems, notebook computers, mobile phones, smart phones, personaldigital assistants, tablets and/or the like.

In an example embodiment, components/modules of the data analyzer 102,the data interpreter 104, the graphical annotation engine 106, thenatural language generation system 108 and/or the user interface 310 areimplemented using standard programming techniques. For example, the dataanalyzer 102, the data interpreter 104, the graphical annotation engine106, the natural language generation system 108 and/or the userinterface 310 may be implemented as a “native” executable running on theprocessor 303, along with one or more static or dynamic libraries. Inother embodiments, the data analyzer 102, the data interpreter 104, thegraphical annotation engine 106, the natural language generation system108 and/or the user interface 310 may be implemented as instructionsprocessed by a virtual machine that executes as one of the otherprograms 330. In general, a range of programming languages known in theart may be employed for implementing such example embodiments, includingrepresentative implementations of various programming languageparadigms, including but not limited to, object-oriented (e.g., Java,C++, C #, Visual Basic.NET, Smalltalk, and the like), functional (e.g.,ML, Lisp, Scheme, and the like), procedural (e.g., C, Pascal, Ada,Modula, and the like), scripting (e.g., Perl, Ruby, Python, JavaScript,VBScript, and the like), and declarative (e.g., SQL, Prolog, and thelike).

The embodiments described above may also use synchronous or asynchronousclient-server computing techniques. Also, the various components may beimplemented using more monolithic programming techniques, for example,as an executable running on a single processor computer system, oralternatively decomposed using a variety of structuring techniques,including but not limited to, multiprogramming, multithreading,client-server, or peer-to-peer, running on one or more computer systemseach having one or more processors. Some embodiments may executeconcurrently and asynchronously, and communicate using message passingtechniques. Equivalent synchronous embodiments are also supported. Also,other functions could be implemented and/or performed by eachcomponent/module, and in different orders, and by differentcomponents/modules, yet still achieve the described functions.

In addition, programming interfaces to the data stored as part of thedata analyzer 102, the data interpreter 104, the graphical annotationengine 106, the natural language generation system 108 and/or the userinterface 310, such as by using one or more application programminginterfaces can be made available by mechanisms such as throughapplication programming interfaces (API) (e.g. C, C++, C #, and Java);libraries for accessing files, databases, or other data repositories;through scripting languages such as XML; or through Web servers, FTPservers, or other types of servers providing access to stored data. Theraw input data 110, the event log 112 and the domain model 114 may beimplemented as one or more database systems, file systems, or any othertechnique for storing such information, or any combination of the above,including implementations using distributed computing techniques.Alternatively or additionally, the raw input data 110, the event log 112and the domain model 114 may be local data stores but may also beconfigured to access data from the remote data sources 356.

Different configurations and locations of programs and data arecontemplated for use with techniques described herein. A variety ofdistributed computing techniques are appropriate for implementing thecomponents of the illustrated embodiments in a distributed mannerincluding but not limited to TCP/IP sockets, RPC, RMI, HTTP, WebServices (XML-RPC, JAX-RPC, SOAP, and the like). Other variations arepossible. Also, other functionality could be provided by eachcomponent/module, or existing functionality could be distributed amongstthe components/modules in different ways, yet still achieve thefunctions described herein.

Furthermore, in some embodiments, some or all of the components of thedata analyzer 102, the data interpreter 104, the graphical annotationengine 106, the natural language generation system 108 and/or the userinterface 310 may be implemented or provided in other manners, such asat least partially in firmware and/or hardware, including, but notlimited to one or more ASICs, standard integrated circuits, controllersexecuting appropriate instructions, and including microcontrollersand/or embedded controllers, FPGAs, complex programmable logic devices(“CPLDs”), and the like. Some or all of the system components and/ordata structures may also be stored as contents (e.g., as executable orother machine-readable software instructions or structured data) on acomputer-readable medium so as to enable or configure thecomputer-readable medium and/or one or more associated computing systemsor devices to execute or otherwise use or provide the contents toperform at least some of the described techniques. Some or all of thesystem components and data structures may also be stored as data signals(e.g., by being encoded as part of a carrier wave or included as part ofan analog or digital propagated signal) on a variety ofcomputer-readable transmission mediums, which are then transmitted,including across wireless-based and wired/cable-based mediums, and maytake a variety of forms (e.g., as part of a single or multiplexed analogsignal, or as multiple discrete digital packets or frames). Suchcomputer program products may also take other forms in otherembodiments. Accordingly, embodiments of this disclosure may bepracticed with other computer system configurations.

FIGS. 4-6 illustrate example flowcharts of the operations performed byan apparatus, such as computing system 300 of FIG. 3, in accordance withexample embodiments of the present invention. It will be understood thateach block of the flowcharts, and combinations of blocks in theflowcharts, may be implemented by various means, such as hardware,firmware, one or more processors, circuitry and/or other devicesassociated with execution of software including one or more computerprogram instructions. For example, one or more of the proceduresdescribed above may be embodied by computer program instructions. Inthis regard, the computer program instructions which embody theprocedures described above may be stored by a memory 301 of an apparatusemploying an embodiment of the present invention and executed by aprocessor 303 in the apparatus. As will be appreciated, any suchcomputer program instructions may be loaded onto a computer or otherprogrammable apparatus (e.g., hardware) to produce a machine, such thatthe resulting computer or other programmable apparatus provides forimplementation of the functions specified in the flowcharts' block(s).These computer program instructions may also be stored in anon-transitory computer-readable storage memory that may direct acomputer or other programmable apparatus to function in a particularmanner, such that the instructions stored in the computer-readablestorage memory produce an article of manufacture, the execution of whichimplements the function specified in the flowcharts' block(s). Thecomputer program instructions may also be loaded onto a computer orother programmable apparatus to cause a series of operations to beperformed on the computer or other programmable apparatus to produce acomputer-implemented process such that the instructions which execute onthe computer or other programmable apparatus provide operations forimplementing the functions specified in the flowcharts' block(s). Assuch, the operations of FIGS. 4-6, when executed, convert a computer orprocessing circuitry into a particular machine configured to perform anexample embodiment of the present invention. Accordingly, the operationsof FIGS. 4-6 define an algorithm for configuring a computer orprocessor, to perform an example embodiment. In some cases, a generalpurpose computer may be provided with an instance of the processor whichperforms the algorithm of FIGS. 4-6 to transform the general purposecomputer into a particular machine configured to perform an exampleembodiment.

Accordingly, blocks of the flowchart support combinations of means forperforming the specified functions and combinations of operations forperforming the specified functions. It will also be understood that oneor more blocks of the flowcharts', and combinations of blocks in theflowchart, can be implemented by special purpose hardware-based computersystems which perform the specified functions, or combinations ofspecial purpose hardware and computer instructions.

In some example embodiments, certain ones of the operations herein maybe modified or further amplified as described below. Moreover, in someembodiments additional optional operations may also be included (someexamples of which are shown in dashed lines in FIG. 4). It should beappreciated that each of the modifications, optional additions oramplifications described herein may be included with the operationsherein either alone or in combination with any others among the featuresdescribed herein.

FIG. 4 is a flow chart illustrating an example method for generatinggraphical annotations. As is shown in operation 402, an apparatus mayinclude means, such as the data analyzer 102, the graphical annotationengine 106, the processor 303, or the like, for receiving an indicationof an alarm condition. In some example embodiments an alarm may causethe selection of a primary data channel and a determination of a timeperiod in which the alarm was generated. Alternatively or additionallyother means may be used to alert the apparatus to a primary datachannel, such as, but not limited to, a user action, a detected patternin the raw input data or a data channel, a determined value in the rawinput data or a data channel, and/or the like.

As is shown in operation 404, an apparatus may include means, such asthe data analyzer 102, the data interpreter 104, the processor 303, orthe like, for determining one or more key patterns in a primary datachannel. In some example embodiments the key patterns may be determinedbased on the time period of the alarm condition, however in otherexamples a larger or smaller time period may be selected. Thedetermination of the one or more key patterns is further described withreference to FIG. 5.

As is shown in operation 406, an apparatus may include means, such asthe data analyzer 102, the data interpreter 104, the processor 303, orthe like, for determining one or more significant patterns in one ormore related data channels. In some example embodiments, the apparatus,such as via the data analyzer 102 may determine one or related channelsbased on one or more predefined relationships. In some examples, thepredefined relationships may be defined by the domain model 114. Thedetermination of the one or more significant patterns is furtherdescribed with reference to FIG. 6.

As is shown in operation 408, an apparatus may include means, such asthe data analyzer 102, the data interpreter 104, the processor 303, orthe like, for determining one or more contextual channels to be includedin the graphical output. The one or more contextual channels may provideevents or other context that may be indicative of the cause of the oneor more key patterns and/or the one or more significant patterns. As isshown in operation 410, an apparatus may include means, such as thegraphical annotation engine 106, the scale determination engine 120, theprocessor 303, or the like, for determining a time period to berepresented by the graphical output. In some example embodiments, thetime period chosen for the graph is the time period in which the one ormore key patterns are displayed. As is shown in operation 412, anapparatus may include means, such as the natural language generationsystem 108, the document planner 130, the microplanner 132, the realizer134, the processor 303, or the like, for generating a natural languageannotation of at least one of the one or more key patterns or the one ormore significant patterns.

As is shown in operation 414, an apparatus may include means, such asthe graphical annotation engine 106, the annotation location determiner122, the graphical output generator 124, the processor 303, the userinterface 310 or the like, for generating a graphical output that isconfigured to be displayed in a user interface. In some exampleembodiments, the graph is configured to utilize the determined scale todisplay the primary data channel, one or more related channels havingsignificant events, natural language annotations, a narrative, eventsand/or the like. In some example embodiments and in an instance in whicha user clicks on a text annotation in the graph, a corresponding phrasein the situation analysis text may be highlighted and/or in an instancein which a user clicks on underlined phrase in the narrative orsituation analysis text, a corresponding annotation may be highlightedon the graph.

FIG. 5 is a flow chart illustrating an example method determining one ormore key patterns in a primary data channel. As is shown in operation502, an apparatus may include means, such as the data analyzer 102, thedata interpreter 104, the processor 303, or the like, for identifyingone or more patterns wherein a pattern is at least one of a trend, spikeor step in the data channel. As is shown in operation 504, an apparatusmay include means, such as the data analyzer 102, the data interpreter104, the processor 303, or the like, for assigning an importance levelto the one or more patterns. As is shown in operation 506, an apparatusmay include means, such as the data analyzer 102, the data interpreter104, the processor 303, or the like, for identifying one or more keypatterns of the one or more patterns, wherein a key pattern is a patternthat exceeds a predefined importance level.

FIG. 6 is a flow chart illustrating an example method determining one ormore significant patterns in a related data channel. As is shown inoperation 602, an apparatus may include means, such as the data analyzer102, the data interpreter 104, the processor 303, or the like, foridentifying one or more unexpected patterns in a related data channel inresponse to detecting one or more patterns in the data channel. In someexample embodiments, the one or more patterns identified in another datachannel violate a predetermined constraint, threshold or the like may beconsidered as unexpected patterns or anomalies. The one or patterns maybe identified within the time period or scale identified for the graph.As is shown in operation 604, an apparatus may include means, such asthe data analyzer 102, the data interpreter 104, the processor 303, orthe like, for assigning an importance level to the one or moreunexpected patterns. As is shown in operation 606, an apparatus mayinclude means, such as the data analyzer 102, the data interpreter 104,the processor 303, or the like, for identifying one or more significantpatterns of the one or more unexpected patterns, wherein a significantpattern is an unexpected pattern.

Many modifications and other embodiments of the inventions set forthherein will come to mind to one skilled in the art to which theseinventions pertain having the benefit of the teachings presented in theforegoing descriptions and the associated drawings. Therefore, it is tobe understood that the inventions are not to be limited to the specificembodiments disclosed and that modifications and other embodiments areintended to be included within the scope of the appended claims.Moreover, although the foregoing descriptions and the associateddrawings describe example embodiments in the context of certain examplecombinations of elements and/or functions, it should be appreciated thatdifferent combinations of elements and/or functions may be provided byalternative embodiments without departing from the scope of the appendedclaims. In this regard, for example, different combinations of elementsand/or functions than those explicitly described above are alsocontemplated as may be set forth in some of the appended claims.Although specific terms are employed herein, they are used in a genericand descriptive sense only and not for purposes of limitation.

1.-20. (canceled)
 21. An apparatus comprising at least one processor andat least one memory including computer program code, the at least onememory and the computer program code configured to, with the at leastone processor, cause the apparatus to: generate at least one messagewhen a pattern from one or more patterns in a data channel or a patternfrom one or more patterns in another data channel satisfies one or moremessage requirements, wherein the one or more patterns in the datachannel and the one or more patterns in the another data channel arederived from raw input data; select one or more words to express aconcept or a relation in the at least one message; apply a grammar tothe selected one or more words to generate one or more phrases; generatea graphical output for display in a user interface based on the datachannel, the another data channel, context information for at least oneof the one or more patterns in the data channel or the one or morepatterns in the another data channel, and the one or more phrases; anddisplay, via a user interface, the generated graphical output and anarrative that linguistically describes the graphical output.
 22. Theapparatus of claim 21, wherein the one or more phrases are interactivelyannotated on the graphical output of the data channel and the anotherdata channel.
 23. The apparatus of claim 21, wherein the narrative isconfigured to be displayed separately in the user interface from the oneor more phrases.
 24. The apparatus of claim 21, wherein the one or morepatterns is at least one of a trend, spike, or step in the data channel.25. The apparatus of claim 21, wherein the at least one memory includingthe computer program code is further configured to, with the at leastone processor, cause the apparatus to: assign an importance level to theone or more patterns; and annotate the one or more patterns as one ormore key patterns when the importance level of the one or more patternsexceeds a predefined importance level.
 26. The apparatus of claim 25,wherein the at least one memory including the computer program code isfurther configured to, with the at least one processor, cause theapparatus to: generate a graph displaying a time period, wherein thetime period chosen for the graph is the time period in which the one ormore key patterns are displayed; and display, via a user interface, thegraph with the generated graphical output and narrative thatlinguistically describes the graphical output.
 27. A computer programproduct comprising at least one computer readable non-transitory memorymedium having program code instructions stored thereon, the program codeinstructions which when executed by an apparatus causes the apparatusto: generate at least one message when a pattern from one or morepatterns in a data channel or a pattern from one or more patterns inanother data channel satisfies one or more message requirements, whereinthe one or more patterns in the data channel and the one or morepatterns in the another data channel are derived from raw input data;select one or more words to express a concept or a relation in the atleast one message; apply a grammar to the selected one or more words togenerate one or more phrases; generate a graphical output for display ina user interface based on the data channel, the another data channel,context information for at least one of the one or more patterns in thedata channel or the one or more patterns in the another data channel,and the one or more phrases; and display, via a user interface, thegenerated graphical output and a narrative that linguistically describesthe graphical output.
 28. The computer program product of claim 27,wherein the one or more phrases are interactively annotated on thegraphical output of the data channel and the another data channel. 29.The computer program product of claim 27, wherein the narrative isconfigured to be displayed separately in the user interface from the oneor more phrases.
 30. The computer program product of claim 27, whereinthe one or more patterns is at least one of a trend, spike, or step inthe data channel.
 31. The computer program product of claim 27, whereinthe at least one computer readable non-transitory memory medium havingprogram code instructions stored thereon, the program code instructionswhich when executed by an apparatus further causes the apparatus to:assign an importance level to the one or more patterns; and annotate theone or more patterns as one or more key patterns when the importancelevel of the one or more patterns exceeds a predefined importance level.32. The computer program product of claim 31, wherein the at least onecomputer readable non-transitory memory medium having program codeinstructions stored thereon, the program code instructions which whenexecuted by an apparatus further causes the apparatus at least to:generate a graph displaying a time period, wherein the time periodchosen for the graph is the time period in which the one or more keypatterns are displayed; and display, via a user interface, the graphwith the generated graphical output and narrative that linguisticallydescribes the graphical output.
 33. A computer-implemented method fortransforming raw input data that is at least partially expressed in anon-linguistic format into a format that can be expressed linguisticallyin one or more phrases with a graphical representation of the raw inputdata, the method comprising: generating, using a processor, at least onemessage when a pattern from one or more patterns in a data channel or apattern from one or more patterns in another data channel satisfies oneor more message requirements, wherein the one or more patterns in thedata channel and the one or more patterns in the another data channelare derived from raw input data; selecting, using the processor, one ormore words to express a concept or a relation in the at least onemessage; applying, using the processor, a grammar to the selected one ormore words to generate one or more phrases; generating, using theprocessor, a graphical output for display in a user interface based onthe data channel, the another data channel, context information for atleast one of the one or more patterns in the data channel or the one ormore patterns in the another data channel, and the one or more phrases;and displaying, via a user interface and using the processor, thegenerated graphical output and a narrative that linguistically describesthe graphical output.
 34. The method of claim 33, wherein the one ormore phrases are interactively annotated on the graphical output of thedata channel and the another data channel.
 35. The method of claim 33,wherein the narrative is configured to be displayed separately in theuser interface from the one or more phrases.
 36. The method of claim 33,wherein the one or more patterns is at least one of a trend, spike, orstep in the data channel.
 37. The method of claim 33, furthercomprising: assigning, using the processor, an importance level to theone or more patterns; and annotating, using the processor, the one ormore patterns as one or more key patterns when the importance level ofthe one or more patterns exceeds a predefined importance level.
 38. Themethod according to claim 37, further comprising: generating, using theprocessor, a graph displaying a time period, wherein the time periodchosen for the graph is the time period in which the one or more keypatterns are displayed; and displaying, via a user interface and usingthe processor, the graph with the generated graphical output andnarrative that linguistically describes the graphical output.